home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 3006 / 3006.xpi / components / dhAddToBlackListProcessor.js next >
Text File  |  2010-01-15  |  6KB  |  168 lines

  1. /******************************************************************************
  2.  *            Copyright (c) 2006-2009 Michel Gutierrez. All Rights Reserved.
  3.  ******************************************************************************/
  4.  
  5. /**
  6.  * Constants.
  7.  */
  8.  
  9. const NS_ADD2BLPROC_CID = Components.ID("{0c392af1-68a0-4a66-b7ca-8ce72a01f2ad}");
  10. const NS_ADD2BLPROC_PROG_ID = "@downloadhelper.net/add-to-blacklist-processor;1";
  11. const DHNS = "http://downloadhelper.net/1.0#";
  12.  
  13. var Util=null;
  14.  
  15. /**
  16. * Object constructor
  17. */
  18. function Add2BL() {
  19.     try {
  20.         //dump("[Add2BL] constructor\n");
  21.  
  22.         var prefService=Components.classes["@mozilla.org/preferences-service;1"]
  23.                                            .getService(Components.interfaces.nsIPrefService);
  24.         this.pref=prefService.getBranch("dwhelper.");
  25.         this.core=Components.classes["@downloadhelper.net/core;1"].
  26.             getService(Components.interfaces.dhICore);
  27.         this.core.registerProcessor(this);
  28.     } catch(e) {
  29.         dump("[Add2BL] !!! constructor: "+e+"\n");
  30.     }
  31. }
  32.  
  33. Add2BL.prototype = {
  34.         get name() { return "add-to-blacklist"; },
  35.         get provider() { return "DownloadHelper"; },
  36.         get title() { return Util.getText("processor.add2bl.title"); },
  37.         get description() { return Util.getText("processor.add2bl.description"); },
  38.         get enabled() { return true; },
  39. }
  40.  
  41. Add2BL.prototype.canHandle=function(desc) {
  42.     //dump("[Add2BL] canHandle()\n");
  43.     if(!desc.has("media-url"))
  44.         return false;
  45.     var mediaUrl=Util.getPropsString(desc,"media-url");
  46.     if(/\/\/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?::[0-9]{1,5})?\//.test(mediaUrl))
  47.         return false;
  48.     return true;
  49. }
  50.  
  51. Add2BL.prototype.requireDownload=function(desc) {
  52.     //dump("[Add2BL] requireDownload()\n");
  53.     return false;
  54. }
  55.  
  56. Add2BL.prototype.preDownload=function(desc) {
  57.     //dump("[Add2BL] preDownload()\n");
  58.     return true;
  59. }
  60.  
  61. Add2BL.prototype.handle=function(desc) {
  62.     //dump("[Add2BL] handle()\n");
  63.     var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  64.                                 .getService(Components.interfaces.nsIWindowMediator);
  65.     var w = wm.getMostRecentWindow("navigator:browser");
  66.     w.openDialog('chrome://dwhelper/content/add-to-blacklist.xul','_blank',"chrome,centerscreen",desc);
  67. }
  68.  
  69. Add2BL.prototype.QueryInterface = function(iid) {
  70.     //dump("[Add2BL] QueryInterface("+iid+")\n");
  71.     if(
  72.         iid.equals(Components.interfaces.dhIProcessor) ||
  73.         iid.equals(Components.interfaces.nsISupports)
  74.     ) {
  75.         return this;
  76.     }
  77.     throw Components.results.NS_ERROR_NO_INTERFACE;
  78. }
  79.  
  80. var vAdd2BLModule = {
  81.     firstTime: true,
  82.     
  83.     /*
  84.      * RegisterSelf is called at registration time (component installation
  85.      * or the only-until-release startup autoregistration) and is responsible
  86.      * for notifying the component manager of all components implemented in
  87.      * this module.  The fileSpec, location and type parameters are mostly
  88.      * opaque, and should be passed on to the registerComponent call
  89.      * unmolested.
  90.      */
  91.     registerSelf: function (compMgr, fileSpec, location, type) {
  92.  
  93.         if (this.firstTime) {
  94.             this.firstTime = false;
  95.             throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
  96.         }
  97.         compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  98.         compMgr.registerFactoryLocation(NS_ADD2BLPROC_CID,
  99.                                         "Add2BL",
  100.                                         NS_ADD2BLPROC_PROG_ID, 
  101.                                         fileSpec,
  102.                                         location,
  103.                                         type);
  104.     },
  105.  
  106.     unregisterSelf: function(compMgr, fileSpec, location) {
  107.         compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  108.         compMgr.unregisterFactoryLocation(NS_DH_ADD2BLPROC_CID, fileSpec);
  109.     },
  110.  
  111.     /*
  112.      * The GetClassObject method is responsible for producing Factory and
  113.      * SingletonFactory objects (the latter are specialized for services).
  114.      */
  115.     getClassObject: function (compMgr, cid, iid) {
  116.         if (!cid.equals(NS_ADD2BLPROC_CID)) {
  117.             throw Components.results.NS_ERROR_NO_INTERFACE;
  118.         }
  119.  
  120.         if (!iid.equals(Components.interfaces.nsIFactory)) {
  121.             throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  122.         }
  123.  
  124.         return this.vAdd2BLFactory;
  125.     },
  126.  
  127.     /* factory object */
  128.     vAdd2BLFactory: {
  129.         /*
  130.          * Construct an instance of the interface specified by iid, possibly
  131.          * aggregating it with the provided outer.  (If you don't know what
  132.          * aggregation is all about, you don't need to.  It reduces even the
  133.          * mightiest of XPCOM warriors to snivelling cowards.)
  134.          */
  135.         createInstance: function (outer, iid) {
  136.             if (outer != null) {
  137.                 throw Components.results.NS_ERROR_NO_AGGREGATION;
  138.             }
  139.     
  140.             if(Util==null) 
  141.                 Util=Components.classes["@downloadhelper.net/util-service;1"]
  142.                     .getService(Components.interfaces.dhIUtilService);
  143.  
  144.             return new Add2BL().QueryInterface(iid);
  145.         }
  146.     },
  147.  
  148.     /*
  149.      * The canUnload method signals that the component is about to be unloaded.
  150.      * C++ components can return false to indicate that they don't wish to be
  151.      * unloaded, but the return value from JS components' canUnload is ignored:
  152.      * mark-and-sweep will keep everything around until it's no longer in use,
  153.      * making unconditional ``unload'' safe.
  154.      *
  155.      * You still need to provide a (likely useless) canUnload method, though:
  156.      * it's part of the nsIModule interface contract, and the JS loader _will_
  157.      * call it.
  158.      */
  159.     canUnload: function(compMgr) {
  160.         return true;
  161.     }
  162. };
  163.  
  164. function NSGetModule(compMgr, fileSpec) {
  165.     return vAdd2BLModule;
  166. }
  167.  
  168.